home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / UTILITY / MULPRI00 / 4P_TEXT.TXT < prev    next >
Encoding:
Text File  |  1993-08-08  |  30.4 KB  |  796 lines

  1. Vollkompatible Erweiterung der Ataris um mehrere Parallelports
  2. **************************************************************
  3.  
  4.  
  5. Ziel
  6. ----
  7. Es werden 4 Druckerports gebraucht, mit denen auch ahnungslose Programme 
  8. arbeiten können. Es soll alles, was am Originalport nutzbar ist, an 
  9. beliebigen Ports nutzbar sein, z.B. Drucker, EPROM- und GAL-Programmierer, 
  10. Scanner, Sampler, Foliotalks. Neue Programme sollen den Port selbst wählen 
  11. können. So ergeben sich die Forderungen:
  12. - aus der Sicht eines Programms volle Kompatibilität zum Original,
  13.   inklusive der Bidirektionalität der Datenleitungen D7..D0
  14. - die Ports ändern ihre Ausgangspegel nicht, wenn sie inaktiv sind
  15. - durch Software umschaltbar
  16. Das Projekt trägt den Namen Mulpri und das Kurzzeichen 4P.
  17.  
  18.  
  19. Copyright
  20. ---------
  21.  
  22. Dies ist die freie Version von Mulpri. Diese Version gehört zu der 
  23. besonderen Art von Shareware, die aus einer Hardware-Bauanleitung und 
  24. Software besteht. Natürlich sind weder Hardware noch Software in ihrer 
  25. Funktion eingeschränkt. Der Shareware-Preis, den jeder Mulpri-Bastler 
  26. bezahlen sollte, beträgt 30DM (Kontonummer folgt). Das halte ich für Mulpri 
  27. angemessen, hoffentlich viele Bastler/Nutzer auch.
  28.  
  29. Dieses Paket darf und soll frei kopiert werden, solange alle im Abschnitt 
  30. Inhalt aufgeführten Dateien unverändert weitergegeben werden. Wenn Dateien 
  31. oder modifizierte Originaldateien hinzufügen werden, so muß für diese ein 
  32. wesentlich anderer Name gewählt und deren Inhalt vermerkt werden. Die 
  33. Übersetzung in andere Sprachen ist ausdrücklich erwünscht.
  34.  
  35. Mulpri darf für den Eigenbedarf gebaut werden. Gegen den Aufbau für gute 
  36. Freunde habe ich ebenfalls nichts. Dabei darf der Bastler aber keinen 
  37. Gewinn machen. Eine kommerzielle Fertigung oder Verwertung ist nur mit 
  38. meiner schriftlichen Zustimmung erlaubt.
  39.  
  40. Ich habe diese Bauanleitung sorgfältig überprüft. Ich hafte in keiner Weise 
  41. für eventuelle Fehler und/oder (daraus resultierende) Beschädigungen 
  42. irgendwelcher Objekte oder Subjekte oder die Unbrauchbarkeit für einen 
  43. Einsatzzweck. Ich bitte aber darum, mir Fehler mitzuteilen. Diese 
  44. Bugreports sollten so genau wie möglich sein. Nur wenn ich einen Fehler 
  45. finden kann, kann ich ihn beseitigen.
  46.  
  47. In diesem Paket sind alle Informationen zu Mulpri enthalten. Außer dem 
  48. Layout als Scooter-Datei und den Quellen der Programme habe auch ich nicht 
  49. mehr. Anfragen werden normalerweise nur beantwortet, wenn es mich kein 
  50. Geld kostet (Email oder frankierten Rückumschlag beilegen). Ich habe auch 
  51. ein Telefon, das man nur in Ausnahmefällen strapazieren sollte.
  52.  
  53. Es gibt bei mir eine fertig aufgebaute Version, die sich im Aufbau 
  54. möglicherweise von der freien Version unterscheidet. Die Fertigversion 
  55. enthält alle Funktionen der freien Version und eventuell noch 
  56. Erweiterungen. Preis und Bezugsbedingungen teile ich auf Anfrage mit.
  57.  
  58. Wahrscheinlich gibt es die Platinen der freien Version und die GALs 
  59. ebenfalls bei mir. Preis erstmal auf Anfrage.
  60.  
  61. Meine Postanschrift:
  62. Harun Scheutzow
  63. Dresdener Straße 83
  64. D-10179 Berlin
  65.  
  66. Per Email bin ich zu erreichen
  67. im Mausnetz:      Harun Scheutzow @B
  68. aus dem Internet: Harun_Scheutzow@B.maus.de
  69.  
  70. Meine Bankverbindung:
  71. Kontoinhaber: Harun Scheutzow
  72. Kontonummer:  581854107
  73. Bankleitzahl: 10010010
  74. Bank:         Postgiroamt Berlin
  75.  
  76.  
  77. Inhalt des Paketes
  78. ------------------
  79. Bilder sind 300dpi GEM-IMG monochrom, Maßstab 1:1. Bestückungspläne sind 
  80. Ansicht von der Oberseite (Bauelemente auf Unterseite erscheinen in 
  81. Spiegelschrift). Layouts sind Ansicht von der Unterseite (Kupferseite) der 
  82. Platine.
  83. MUL_USG.IMG   Layout der Mulpri-Hauptplatine. Sieht mit 300dpi sehr eng
  84.               aus. Ich habe 1270dpi-Druck auf Film belichtet -> super.
  85. MUL_BP.IMG    Bestückungsplan der Mulpri-Hauptplatine
  86. SND_USG.IMG   Layout der Soundchipplatine
  87. SND_BP.IMG    Bestückungsplan der Soundchipplatine
  88.  
  89. 4P_TEXT.TXT    dieser Text, die gesamte Erklärung
  90. 4P.JED         JEDEC-File für Hauptplatinen-GALs
  91. 4P_SND.JED     JEDEC-File für Soundchipplatinen-GAL
  92. 4P_AUTO.PRG    Treiber für den AUTO-Ordner
  93. 4P_AUTO.TXT    Dokumentation zu 4P_AUTO.PRG
  94. 4PRN_COO.TXT   Dokumentation des von 4P_AUTO angelegten Cookies
  95. 4P_ACC.ACC     Accessory für die Einstellungen
  96. 4P_ACC.TXT     Dokumentation zu 4P_ACC.ACC
  97. Es gehören in Zukunft dazu (am 08.08.1993 noch nicht):
  98.   4P_CPX.CPX     CPX für die Einstellungen
  99.   4P_CPX.TXT     Dokumentation zu 4P_CPX.CPX
  100.  
  101.  
  102. Realisierung
  103. ------------
  104.  
  105. Der Soundchip-PortB (D0-D7 auf SUBD-25pol, pin2-pin9) wird je Druckerport 
  106. (kurz: Dp) über ein 8Bit-Latch geführt. Vom Soundchip-PortA werden Bit5 
  107. (/STROBE-Signal auf SUBD-25pol-pin1) und optional Bit7 (/SELIN, gern für 
  108. Scanneranschluß herausgeführt auf SUBD-25pol-pin17, beim Falcon ist 
  109. standardmäßig Bit3 herausgeführt) werden ebenfalls je Dp über ein Latch 
  110. geführt. Die BUSY-Signale (SUBD-25pol-pin1) werden über einen X-auf-1 
  111. Multiplexer gesammelt und dem MFP Bit0 zugeführt. Für den Falcon könnte man 
  112. noch ACK über einen Multiplexer einsammeln, das liegt auf SUBD-25pol-pin10 
  113. und geht an MFP Bit1. Das /STROBE-Latch muß bei einem Reset automatisch auf 
  114. H-Pegel gesetzt werden. Für Bidirektionalität muß das PortB-Latch auch auf 
  115. Eingabe schaltbar sein.
  116.  
  117. Auf der Datenbusseite des Soundchip hängt eine Schaltung, die beim 
  118. Beschreiben des Auswahlregisters des Soundchips die Datenbits D3..D0 
  119. speichert, wenn eine Adresse von $1X geschrieben wurde. Mit den Bits D3..D0 
  120. wird der Dp ausgewählt, wobei immer nur das Bit des gewünschten Dp auf H zu 
  121. setzen ist. Inaktivierung aller Dp ist zum Umschalten erforderlich. Der 
  122. Wert nach Reset ist binär 0001 (erster Dp ausgewählt). Die Software setzt 
  123. immer das zu aktivierende Dp-Bit auf H, aber die RDxL-Leitungen sind 
  124. L-aktiv und enthalten die negierten Werte der Softwareseite. Bei der 
  125. TTL-Realisierung wird durch die Gleichungen des GALs sichergestellt, daß 
  126. immer nur ein Dp aktiviert wird. So werden Kurzschlüsse zwischen den 
  127. Treiberausgängen bei der Betriebsart Eingabe durch unsinnige 
  128. Softwareeinstellungen verhindert. Wenn ein MACH eingesetzt wird, so ließen 
  129. sich bei gleichzeitiger Aktivierung von mehr als einem Port 
  130. Sonderfunktionen realisieren, z.B. die automatische Durchschaltung eines 
  131. Eingabeports auf einen Ausgabeport.
  132.  
  133. Für Bidirektionalität wird beim Beschreiben des Auswahlregisters mit $07 
  134. ein FlipFlop gesetzt, das bei Reset und jedem anderen Schreiben auf das 
  135. Auswahlregister zurückgesetzt wird. Ist das FlipFlop gesetzt und es erfolgt 
  136. ein Schreibzugriff auf das Datenregister, so wird das Bit7 vom Datenbus 
  137. gespeichert (Bit7 =0 bedeutet Dp auf Eingabe). Dieses Bit7 (IOD7) wird von 
  138. den Druckerports gelatcht. Durch Reset werden IOD7 und alle I/O-Flags auf 
  139. Ausgabe gesetzt.
  140.  
  141. Ist ein Dp aktiviert, so sind seine Latches auf Durchgang geschaltet und 
  142. der Multiplexer legt sein BUSY an den MFP an. Ist ein Dp inaktiv, so sind 
  143. die Latches im Speicherzustand und BUSY wird nicht durchgeschaltet.
  144.  
  145. Die Umschaltung der Druckerports übernimmt ein Programm. Es ist immer 
  146. darüber informiert, welcher Dp aktiv ist und welche Pegel an den inaktiven 
  147. Dp zuletzt ausgegeben wurden. Zur Umschaltung wird zuerst der Dp 
  148. inaktiviert. Dann werden aus dem Soundchip die Zustände des PortB und des 
  149. Bit5 (optional auch Bit7 oder Bit3) von PortA gelesen und in den 
  150. Merkerzellen für den ehemals aktiven Dp abgelegt. Auch Bit7 von Register7 
  151. wird gelesen und gespeichert. Nun werden aus den Merkerzellen des zu 
  152. aktivierenden Dp die eben genannten Zustände geholt und in den Soundchip 
  153. geschrieben. Zuletzt wird der neue Dp aktiviert.
  154.  
  155. Der Anschluß erfolgt am Original-Druckerport und mit 8 Leitungen an die 
  156. Platine am Soundchip. Diese 8 Leitungen können auch steckbar ausgelegt und 
  157. herausgeführt werden, so daß die Mulpri-Platine extern angeschlossen wird. 
  158. Die Stromversorgung der Mulpri-Platine kommt über die Leitungen vom 
  159. Soundchip. Für die Versorgung von Geräten, die an Mulpri angeschlossen 
  160. werden, sollte man unbedingt extra Leitungen verlegen.
  161.  
  162.  
  163.  
  164. Schaltung am Soundchip
  165. ======================
  166.  
  167. Signalbelegung der Steuerleitungen BDIR (pin27) und BC1 (pin29) im ST
  168.                   BDIR  BC1    Aktion
  169. inaktiv           low   low
  170. $FFFF8800 read    low   high   Daten lesen
  171. $FFFF8800 write   high  high   Auswahlregister beschreiben
  172. $FFFF8802 read    low   low    (=inaktiv -> sinnloser Zugriff)
  173. $FFFF8802 write   high  low    Daten schreiben
  174.  
  175. Wichtig! Der Soundchip wird anscheinend nur mit /AS und nicht mit /UDS 
  176. selektiert, so daß bei der Selektion noch keine gültigen Daten auf dem Bus 
  177. liegen. Erst mit der Deselektionsflanke darf man die Daten vom Bus 
  178. übernehmen.
  179.  
  180. BDIR und BC1 müssen zur gleichen Zeit umschalten, sonst entstehen 
  181. zwischenzeitlich andere Zustände. Der Soundchip ist relativ langsam und so 
  182. unkritisch. Aber auch für ein 25ns-GAL dürften die Flanken gleichzeitig 
  183. genug sein, da BDIR und BC1 im ST durch je ein Gatter eines 74LS02 aus RWL, 
  184. SNDCSL und A1 erzeugt werden:
  185. BDIR = /(RWL + SNDCS)
  186. BC1  = /(A1 + SNDCS)
  187.  
  188.  
  189. Schaltung am Soundchip-Computerbus
  190. ----------------------------------
  191.  
  192. Signale vom Soundchip-Businterface:
  193. RSTL    L-aktives Reset
  194. BDIR
  195. BC1
  196. D7..D0  Daten vom Bus
  197.  
  198. Signale zur externen Schaltung:
  199. RD3L..RD0L  L-aktive 1 aus 4 Auswahl des aktiven Dp
  200. REXL        L-aktives Resetsignal
  201. IOD7        Bit7 von Register7 des Soundchip, Richtungsbit
  202.  
  203. Es wird ein GAL20v8(-25ns) am Soundchip eingesetzt.
  204.  
  205. GAL 20v8 wird mit selbsterzeugtem GCLK getaktet.
  206. /OE des GALs wird auf GND gelegt.
  207. Es hat Register mit zusätzlicher Selbsthaltung. Die Computerbusdefinition 
  208. sichert, daß die Eingangssignale nicht im Moment der Taktflanke wechseln.
  209. ( <- ist das = für registered-Ausgänge)
  210.  
  211.  
  212. Resetproblem
  213. ------------
  214. Mit der steigenden Flanke des Reset-Signals RSTL werden die Reset-Werte in 
  215. die GAL-Register geschrieben. So erhält man erstens nach PowerOn andere 
  216. Werte als nur die GAL-Register-Grundstellung 0, und zweitens werden auch 
  217. die anderen Resetmöglichkeiten über den CPU-Befehl RESET und das Drücken 
  218. der Reset-Taste berücksichtigt. Will man aber bestimmte Pegel einschreiben, 
  219. und taktet das GAL nicht nur direkt mit dem RSTL-Signal, sondern über ein 
  220. GAL-Gatter, so müssen die Pegel an den Registereingängen des GALs lange 
  221. genug nach der RSTL-L/H-Flanke noch anliegen. Dafür wird eine Verzögerung 
  222. des Reset-Signals gebraucht, die durch ein GAL-Gatter erzeugt wird. Dieses 
  223. Reset heißt REXL und wird auch der externen Schaltung zugeführt. Damit 
  224. keine Störungen durch evtl. Reflexionen auf REXL auftreten (Takt, obwohl 
  225. RSTL nicht mehr L ist), wird REXL mit RSTL verknüpft.
  226.  
  227.  
  228. GAL20v8 Pinbelegung
  229. -------------------
  230.                 ---*---
  231.           GCLK | 1   24| VCC    sndcp40
  232. sndcp37   D0   | 2   23| DEBC1
  233. sndcp36   D1   | 3   22| GCLK
  234. sndcp35   D2   | 4   21| REXL
  235. sndcp34   D3   | 5   20| RD0L
  236. sndcp33   D4   | 6   19| RD1L
  237. sndcp32   D5   | 7   18| RD2L
  238. sndcp31   D6   | 8   17| RD3L
  239. sndcp30   D7   | 9   16| IOD7
  240. sndcp29   BC1  |10   15| IOFE   (intern)
  241. sndcp27   BDIR |11   14| RSTL   sndcp23
  242.           GND  |12   13| GND    sndcp1
  243.                 -------
  244.  
  245. DEBC1 ist das extern auf der H/L-Flanke um mindestens 25ns verzögerte 
  246. BC1-Signal. Die Verzögerung erfolgt mit einem 4.3kOhm/22pF-Tiefpaß. 
  247. Minimalverzögerung für H/L ist 28ns bei 2.7V auf 2.0V bei Cgesamt=22pF. Die 
  248. L/H-Flanke ist auf jeden Fall schnell genug (DEBC1 geht in 200ns von 0V auf 
  249. 2V, wenn BC1 auch nur auf 2.7V geht, Cgesamt=34pF), damit ein definierter 
  250. H-Zustand rechtzeitig vor Ende dieses Zugriffes erreicht wird. Die 
  251. H/L-Flanke erreicht den L-Pegel auf jeden Fall früh genug vor Ende des 
  252. eventuell ganz schnell nachfolgenden Zugriffs, da eine Entladung von 5V auf 
  253. 0.8V nur 270ns dauert. Die 4.3kOhm belasten BC1 nicht wesentlich, da 
  254. Cgesamt max. 34pF (22pF Kondensator, 12pF GAL max.) ist.
  255.  
  256. Beide GCLK verbunden, beide GND verbunden.
  257. GAL sitzt auf kleiner Platine und diese kopfüber auf Soundchip. Beide Pin1 
  258. zeigen in gleiche Richtung.
  259.  
  260.  
  261. Belegung des 8poligen EXT-Verbinders
  262. ------------------------------------
  263. 1  VCC
  264. 2  GND
  265. 3  REXL
  266. 4  RD0L
  267. 5  RD1L
  268. 6  RD2L
  269. 7  RD3L
  270. 8  IOD7
  271.  
  272.  
  273. GAL20v8 Gleichungen
  274. -------------------
  275.  
  276. ;Takt für das GAL: L-Impuls bei Schreiben auf Auswahlregister,
  277. ;L-Impuls bei Schreiben auf Register7, L-Impuls bei Reset
  278. ;auf GAL-Clock-Eingang gelegt
  279. ;L/H-Flanke bei Inaktivierung schreibt ein
  280. GCLK.OE = 1
  281. /GCLK =  BDIR * BC1 * REXL
  282.        + /RSTL * /REXL
  283.        + BDIR * /BC1 * IOFE * REXL
  284.  
  285. ;getriebenes Reset für externe Schaltung, intern als verzögertes
  286. ;(länger aktives)
  287. REXL.OE = 1
  288. REXL =   RSTL
  289.  
  290. ;speichert /D0 beim $1X-Schreiben auf Auswahlregister, L nach Reset
  291. ;es darf nur ein Bit D3..D0 auf H gesetzt sein, sonst wirkt es
  292. ;wie D3..D0 =L, also alles inaktiv
  293. /RD0L <-  /RD0L * D7
  294.        + /RD0L * D6
  295.        + /RD0L * D5
  296.        + /RD0L * /D4
  297.        + /RD0L * /DEBC1
  298.        + D0 * /D1 * /D2 * /D3 * /D7 * /D6 * /D5 * D4 * DEBC1
  299.        + /REXL
  300.  
  301. ;speichert /D1 beim $1X-Schreiben auf Auswahlregister, H nach Reset
  302. /RD1L <-  /RD1L * D7 * REXL
  303.        + /RD1L * D6 * REXL
  304.        + /RD1L * D5 * REXL
  305.        + /RD1L * /D4 * REXL
  306.        + /RD1L * /DEBC1 * REXL
  307.        + /D0 * D1 * /D2 * /D3 * /D7 * /D6 * /D5 * D4 * DEBC1 * REXL
  308.  
  309. ;speichert /D2 beim $1X-Schreiben auf Auswahlregister, H nach Reset
  310. /RD2L <-  /RD2L * D7 * REXL
  311.        + /RD2L * D6 * REXL
  312.        + /RD2L * D5 * REXL
  313.        + /RD2L * /D4 * REXL
  314.        + /RD2L * /DEBC1 * REXL
  315.        + /D0 * /D1 * D2 * /D3 * /D7 * /D6 * /D5 * D4 * DEBC1 * REXL
  316.  
  317. ;speichert /D3 beim $1X-Schreiben auf Auswahlregister, H nach Reset
  318. /RD3L <-  /RD3L * D7 * REXL
  319.        + /RD3L * D6 * REXL
  320.        + /RD3L * D5 * REXL
  321.        + /RD3L * /D4 * REXL
  322.        + /RD3L * /DEBC1 * REXL
  323.        + /D0 * /D1 * /D2 * D3 * /D7 * /D6 * /D5 * D4 * DEBC1 * REXL
  324.  
  325. ;speichert D7 beim Schreiben auf Register7 des Soundchips
  326. ;H nach Reset (Soundchip-Wert für Ausgabe)
  327. ;(bei BC1 =L gibt es nur Takt bei Schreiben auf Register7)
  328. IOD7 <-   IOD7 * DEBC1
  329.         + D7 * /DEBC1
  330.         + /REXL
  331.  
  332. ;H solange Soundchip-Auswahlregister $07 enthält (intern)
  333. IOFE <-  REXL * /D7 * /D6 * /D5 * /D4 * /D3 * D2 * D1 * D0
  334.  
  335.  
  336.  
  337. Der x646, ein bidirektionaler Treiber mit Registern
  338. ===================================================
  339.  
  340. Pinbelegung
  341. -----------
  342.      --*--
  343. CAB | 1 24| VCC
  344. SAB | 2 23| CBA
  345. DIR | 3 22| SBA
  346. A0  | 4 21| /OE
  347. A1  | 5 20| B0
  348. A2  | 6 19| B1
  349. A3  | 7 18| B2
  350. A4  | 8 17| B3
  351. A5  | 9 16| B4
  352. A6  |10 15| B5
  353. A7  |11 14| B6
  354. GND |12 13| B7
  355.      -----
  356.      
  357.  
  358. Verhalten
  359. ---------
  360.  
  361. zwei 8Bit-Ports A und B sowie zwei zugeordnete 8Bit-Register
  362.  
  363. bei OEL =L
  364.   DIR =L  A ist Ausgang, B ist Eingang
  365.      SBA =L  B nach A durchgeschaltet
  366.      SBA =H  A liefert Daten aus RegisterB
  367.   DIR =H  A ist Eingang, B ist Ausgang
  368.      SAB =L  A nach B durchgeschaltet
  369.      SAB =H  B liefert Daten aus RegisterA
  370.      
  371. bei OEL =H
  372.   DIR =egal, A und B sind Eingang
  373.  
  374. CAB und CBA sind von DIR und OEL unabhängig.
  375.  
  376. SAB wirkt nur bei DIR =H.
  377. SBA wirkt nur bei DIR =L.
  378.  
  379. Eine L/H-Flanke an CAB speichert die Daten von A im RegisterA.
  380. Eine L/H-Flanke an CBA speichert die Daten von B im RegisterB.
  381.  
  382. Ist als Latch brauchbar: SAB und CAB sowie SBA und CBA verbunden. Bei L 
  383. werden die Daten durchgeschaltet, mit der L/H-Flanke gespeichert und bei 
  384. H die Registerdaten ausgegeben (hoffentlich ohne Spikes).
  385.  
  386.  
  387. Einsatz im Druckerport
  388. ----------------------
  389.  
  390. OEL = RDxL * DBx
  391. also =L (aktiv) bei Port x auf Ausgabe oder Port x selektiert
  392. realisiert über wiredAND mit 2 Dioden und 10kOhm-Widerstand nach +5V
  393.  
  394. DIR wird mit negierten gelatchten Richtungsbit des Soundchips gesteuert. 
  395. PxDIR ist =H für Soundchip auf Eingabe, x646 also auch vom erweiterten 
  396. Druckerport zum alten Computerport geschaltet
  397.  
  398. Anschlüsse B an Soundchip, A nach außen an neuen Druckerport.
  399.  
  400. CAB =L immer (eigentlich: egal).
  401. SAB =L immer, bei Eingabefunktion immer durchschalten.
  402.  
  403. CBA und SBA zusammen und als H-aktives "Latch enable" an RDxL. Dafür müssen 
  404. alle alten RDx-Definitionen invertiert werden. Ein RDx ist also hier RDxL 
  405. und L-aktiv.
  406.  
  407. Das x in x646 steht für die verschiedenen verwendbaren Baureihen. 
  408. Empfehlenswert sind 74HCT646 und 74LS646. Der LS dürfte etwas 
  409. unempfindlicher gegen elektrische Zerstörung sein, frißt aber einige mA 
  410. mehr Strom. Ebenfalls nutzbar sind 74ALS646, 74ACT646 und 74FCT646, die 
  411. aber alle unnötig schnell schalten und sehr viel Strom liefern können 
  412. (Geschwindigkeit und Strom von links nach rechts steigend). Das kann zu 
  413. Störimpulsen und Reflexionen auf den langen Leitungen führen. Auf keinen 
  414. Fall sollten 74646, 74S646 oder 74AS646 verwendet werden. Daneben 
  415. existieren noch andere Logikserien, aber über alle will ich mich nicht 
  416. auslassen.
  417.  
  418.  
  419.  
  420. Die Mulpri-Platine
  421. ==================
  422.  
  423.  
  424. Belegung der 26poligen Leiterplattenverbinder
  425. ---------------------------------------------
  426. für Flachbandkabel auf SUB-D-Quetschbuchse/stecker
  427. Pinnummern der SUB-D-Buchse
  428. Sicht auf die Bohrungen von der Bestückungsseite:
  429.  ------------------------------------**
  430. |13 12 11 10 09 08 07 06 05 04 03 02 01|
  431. |xx 25 24 23 22 21 20 19 18 17 16 15 14|
  432.  --------------------------------------
  433.  
  434.  
  435. Die beiden GALs
  436. ---------------
  437.  
  438. Beide GALs sind GAL 16v8 und gleich. Das spart Arbeit. Jedes GAL ist für 
  439. zwei Druckerports zuständig. Die BUSY-Ausgänge sind direkt verbunden und 
  440. werden deshalb als tristate betrieben.
  441.  
  442. Das GAL latcht das STR-Signal und das DIR-Signal. STR wird außerdem 
  443. getrieben, damit die Latches nicht von außen umgekippt werden können. Die 
  444. beiden BUSY-Eingänge werden zusammengefaßt. Bei Reset (REXL =L) werden die 
  445. PxSTR =H und die PxDIR =L gesetzt.
  446.  
  447.  
  448. GAL-Pinbelegung
  449. ---------------
  450.  
  451. Für das zweite GAL sind alle "P0" durch "P2" und alle "P1" durch "P3" zu 
  452. ersetzen, wenn der Anschluß in der Schaltung interessiert.
  453.  
  454.         --*--
  455. VCC    | 1 20| VCC
  456. REXL   | 2 19| BENA intern
  457. RD0L   | 3 18| P0DIR
  458. RD1L   | 4 17| P0STR
  459. IOD7   | 5 16| P0SU intern
  460. P0BUSY | 6 15| P1SU intern
  461. frei   | 7 14| P1DIR
  462. STR    | 8 13| BUSY
  463. P1BUSY | 9 12| P1STR
  464. GND    |10 11| GND
  465.         -----
  466.  
  467.  
  468. GAL16v8 Gleichungen
  469. -------------------
  470.  
  471. ;BUSY Output Enable, BUSY hochohmig, wenn kein Port gewählt
  472. BENA.OE = 1
  473. BENA =   /RD0L
  474.        + /RD1L
  475.  
  476. ;Dir-Latch Port0
  477. P0DIR.OE = 1
  478. P0DIR =   P0DIR * RD0L * REXL
  479.         + /IOD7 * /RD0L * REXL
  480.         + /IOD7 * P0DIR * REXL
  481.         
  482. ;Strobe-Ausgang Port0
  483. P0STR.OE = 1
  484. P0STR = P0SU
  485.  
  486. ;Strobe-Latch Port0, intern
  487. P0SU.OE = 1
  488. P0SU =   /REXL
  489.        + P0SU * RD0L
  490.        + STR * /RD0L
  491.        + STR * P0SU
  492.  
  493. ;Strobe-Latch Port1, intern
  494. P1SU.OE = 1
  495. P1SU =   /REXL
  496.        + P1SU * RD1L
  497.        + STR * /RD1L
  498.        + STR * P1SU
  499.  
  500. ;Dir-Latch Port1
  501. P1DIR.OE = 1
  502. P1DIR =   P1DIR * RD1L * REXL
  503.         + /IOD7 * /RD1L * REXL
  504.         + /IOD7 * P1DIR * REXL
  505.         
  506. ;BUSY-Ausgang zum Computer, gesammelte PxBUSY
  507. ;hochohmig wenn beide Px inaktiv
  508. BUSY.OE = BENA
  509. BUSY =   P0BUSY * /RD0L
  510.        + P1BUSY * /RD1L
  511.  
  512. ;Strobe-Ausgang Port1
  513. P1STR.OE = 1
  514. P1STR = P1SU
  515.  
  516.  
  517. Schaltungsdetails
  518. -----------------
  519. Zum Schutz der GAL-Eingänge (BUSY) wurden 1kOhm-Widerstände vorgesehen.
  520.  
  521. Die 330Ohm-Pullups an den BUSY-Eingängen der Mulpri-Platine belasten die 
  522. Signalquelle wie viele alte Centronics-Ports mit 16mA im Low-Zustand. Der 
  523. AtariST hat meist ebenfalls 330Ohm-Widerstände. Man kann sie etwas größer 
  524. wählen, um die Last zu verringern. Das kann aber beim Einlesen von 
  525. schnellen Impulsfolgen (z.B. vom GAL-Prommer) zu seltsamen Effekten führen, 
  526. die nicht auf ihre Ursache hindeuten. So wurden bei 2kOhm-Pullups 
  527. beispielsweise einige Low-Pegel als High-Pegel gelesen (wirklich!).
  528.  
  529.  
  530. Bauteilliste Soundchipplatine
  531. -----------------------------
  532. GAL20v8-25 programmiert
  533. optional 24polige Fassung (schmal)
  534. 4.3kOhm SMD-Widerstand
  535. 22pF SMD-Kondensator
  536. 100nF SMD-Kondensator
  537. (optional) 40polige Fassung (mit gedrehten Kontakten)
  538. mindestens 13, höchstens 21 Kontaktstifte (eine Seite in Leiterplatte, 
  539. andere Seite in Fassung auf Soundchip oder direkt auf Soundchip)
  540.  
  541.  
  542. Bauteilliste Mulpri-Platine
  543. ---------------------------
  544. 4 Stück 74HCT646 oder 74LS646
  545. 2 Stück GAL16v8-25 programmiert
  546. optional 2 Stück 20polige Fassung (schmal, mit gedrehten Kontakten)
  547. 8 Stück Dioden 1N4148, besser noch SD103B o.ä. Shottky-Typ
  548. 4 Stück 330Ohm Widerstand (330Ohm bis 820Ohm)
  549. 4 Stück 1kOhm Widerstand (500Ohm bis 1.8kOhm)
  550. 4 Stück 10kOhm Widerstand (5kOhm bis 20kOhm)
  551. 5 Stück 100nF Kondensator (Abblockkondensator)
  552. 10 Stück Drahtschnipsel als Brücken
  553. 5 Stück Schneidklemm-Leiterplattenverbinder
  554. 5 Stück 25poliges Flachbandkabel, Länge nach Bedarf
  555. 4 Stück SUB-D-Schneidklemm-Buchse (weiblich)
  556. 1 Stück SUB-D-Schneidklemm-Stecker (männlich)
  557. Draht zur Verbindung mit Soundchip-Platine, optinal 15poligen SUB-D-Stecker 
  558. und 15polige SUB-D-Buchse für lösbare Verbindung
  559.  
  560.  
  561. Aufbau der Soundchipplatine
  562. ---------------------------
  563.  
  564. Zuerst werden die SMD-Bauelemente bestückt.
  565.  
  566. Je nach Platz über dem Soundchip sollte man für das GAL und die Platine 
  567. eine Fassung vorsehen, nur für die Platine eine Fassung verwenden oder 
  568. alles direkt löten. Die Kontaktstifte sind auf der Oberseite einzusetzen, 
  569. wo auch das GAL sitzt. Die Kabel zur Mulpri-Platine (falls gewünscht, mit 
  570. 15poligem SUB-D-Verbinder) sollten ebenfalls angelötet werden, werden aber 
  571. noch nicht mit der Mulpri-Platine verbunden.
  572.  
  573. Die Platine sitzt kopfüber (GAL zum Soundchip hin) auf dem Soundchip. Pin1 
  574. von GAL und Soundchip zeigen in die gleiche Reichtung.
  575.  
  576. Wenn die Soundchip-Platine komplett auf dem Soundchip sitzt, kann eine 
  577. Funktionskontrolle durchgeführt werden. Der Rechner muß sich genau wie vor 
  578. dem Einbau verhalten, ansonsten sind irgendwo Kurzschlüsse oder 
  579. schwerwiegende Defekte entstanden und zu suchen.
  580.  
  581.  
  582. Aufbau der Mulpri-Platine
  583. -------------------------
  584.  
  585. Zuerst werden die Brücken bestückt.
  586.  
  587. Für das Anquetschen der Flachbandkabel an die Leiterplattenverbinder (LPV) 
  588. gibt es einige Varianten. Auf jeden Fall muß man darauf achten, daß Pin1 
  589. des LPV und des SUB-D-Verbinders auf der gleichen Ader des Kabels zu liegen 
  590. kommen. Das Kabel wird in den LPV auf der Pin1-Seite bündig eingelegt, so 
  591. daß Pin26 frei bleibt.
  592. - Man bohrt in ein Stück Hartholz, Plast oder Metall 26 Löcher entsprechend 
  593. der Pins, steckt den LPV hinein und das Ganze mit Kabel zum Quetschen in 
  594. einen Schraubstock. Danach wird der LPV eingelötet.
  595. - Man lötet zuerst den LPV ein, steckt das Kabel ein und legt zum Quetschen 
  596. auf der Leiterseite ein Stück Weichholz zwischen Schraubstock und Platine, 
  597. in das sich die überstehenden Pins hineinbohren können. Dann wird 
  598. gequetscht.
  599. - Oder aber ach nicht doch ... (Man muß nicht mit einem Schraubstock 
  600. arbeiten, sondern kann _bei_ _entsprechendem_ _Geschick_ solche 
  601. Klemmverbindungen mit einem Hammer zusammenschlagen.)
  602.  
  603. Es werden alle anderen Bauelemente bestückt.
  604.  
  605. Die Kabel von der Soundchipplatine werden angelötet. Dabei ist wieder 
  606. darauf zu achten, daß die gekennzeichneten Pin1 miteinander verbunden 
  607. werden und die restlichen Adern entsprechend folgen.
  608.  
  609. Wurde ein Steckverbinder zur Soundchipplatine vorgesehen, so wird dieser 
  610. gesteckt. Jetzt erfolgt ein Testlauf noch ohne Verbindung zum alten 
  611. Druckerport. Alles sollte wie früher funktionieren, andernfalls muß man die 
  612. Ursachen für Rauchzeichen oder sonstiges suchen.
  613.  
  614. Die Verbindung zwischen Original-Druckerport und Mulpri wird hergestellt. 
  615. An Port1 der Mulpri wird ein Drucker (oder etwas anderes geeignetes) 
  616. angeschlossen. Wenn der Rechner gestartet wird, sollte sich das Gerät an 
  617. Port1 so verhalten, als wäre es am Originalport.
  618.  
  619. Wie und wo oder ob er/sie/es Mulpri in den Rechner einbaut, muß jeder selbst 
  620. entscheiden.
  621.  
  622.  
  623. Verbindung zwischen Soundchipplatine und Mulpri-Platine
  624. -------------------------------------------------------
  625.  
  626. Wenn diese beiden Platinen nicht fest sondern steckbar verbunden werden 
  627. sollen, so sind dafür eine 15polige SUB-D-Buchse auf der 
  628. Soundchipplatinenseite und ein 15poliger SUB-D-Stecker auf der 
  629. Mulpri-Platinenseite zu verwenden.
  630.  
  631. Pinbelegung:
  632. (Pin1..8 wie Pin1..8 des EXT-Anschlusses auf Soundchipplatine)
  633. 1  VCC
  634. 2  GND
  635. 3  REXL
  636. 4  RD0L
  637. 5  RD1L
  638. 6  RD2L
  639. 7  RD3L
  640. 8  IOD7
  641. 9, 10, 11       optional VCC (+5V) für externe Geräte
  642. 12, 13, 14, 15  optional GND für externe Geräte
  643.  
  644. Auf keinen Fall darf die Stromversorgung für externe Geräte wie 
  645. EPROM/GAL-Programmierer irgendwo auf der Mulpri-Platine entnommen werden. 
  646. Dafür sind die Zuleitungen nicht ausgelegt, so daß es zu Störungen kommen 
  647. kann. Wenn man seinem Rechnernetzteil die Versorgung dieser Geräte zumuten 
  648. kann, müssen dafür extra Kabel verlegt werden, am besten direkt vom GND- 
  649. und VCC-Anschluß des Rechnernetzteils auf der Computerplatine. Dafür sind 
  650. Pin9..11 und Pin12..15 reserviert.
  651.  
  652.  
  653. Nach Einschalten oder Reset
  654. ---------------------------
  655. ist Port1 eingeschaltet. Alle Ports sind auf Ausgabe, die /STROBE-Leitungen 
  656. sind inaktiv (High). Wird kein Treiber geladen, kann man mit Port1 wie mit 
  657. dem Originalport arbeiten.
  658.  
  659.  
  660. Falcon
  661. ------
  662. Der Soundchip des Falcon heißt YM3439 und befindet sich in einem 44poligen 
  663. Quadflatpack-Gehäuse. Dafür paßt diese Soundchipplatine leider nicht. 
  664. Ansonsten ist er aber wohl kompatibel, so daß ich bei entsprechendem 
  665. Interesse wahrscheinlich eine Version für den Falcon entwickeln werde. 
  666. Außerdem hat der Falcon einen Eingang (ACK) und einen Ausgang (SELECT) mehr 
  667. am Druckerport als der ST. Diese kann man entweder ignorieren, fest mit 
  668. einem Port verdrahten, über noch zwei GALs in freier Verdrahtung führen, 
  669. oder: eine spätere kommerzielle Version der Hardware wird diese beiden 
  670. Signale wahrscheinlich auch umschalten. Die Software wird dann entsprechend 
  671. ergänzt.
  672.  
  673. Falls es jemanden interessiert:
  674. Die Druckerschnittstelle entspricht der des Atari-ST, bis auf zwei
  675. hinzugekommene Signale. Auf Pin17 liegt jetzt SELECT, das vom Soundchip PortA
  676. Bit3 gesteuert wird. Die Grundeinstellung nach Reset ist Low. Auf Pin10 ist der
  677. Eingang ACK, der zum MFP-Port Bit1 führt. Hier haben die Atari-Hardwaredesigner
  678. wieder gepennt (wie im 1040STE am Monodetect) und einen Pullup-Widerstand
  679. vergessen (Eingang ist freifliegend).
  680.  
  681. Übrigens: Busy wird nur noch mit 3.3kOhm gegen +5V gezogen. Ist ein biβchen
  682. viel, meine ich.
  683.  
  684.  
  685. Scanner
  686. -------
  687. Eine beliebte Anschlußmöglichkeit für Flachbettscanner am ST-Druckerport 
  688. ist das zusätzliche Herausführen eines Soundchip-PortA-Signal (bit7 war es 
  689. wohl) auf Pin17 des Druckerports. Da die freie Version der Hardware das 
  690. Umschalten dieses Signals noch nicht unterstützt, sollte man auf der 
  691. Mulpri-Platine Pin17 des Anschlusses zum Originalport mit Pin17 eines Ports 
  692. durch einen Draht verbinden. An diesen Port schließt man dann seinen 
  693. Scanner an.
  694.  
  695.  
  696. Einige Problemdrucker
  697. ---------------------
  698. Die Treiber der Mulpri-Karte können wesentlich mehr Strom liefern als der 
  699. Originalport. So sollte auch der Anschluß alter Drucker funktionieren, die 
  700. intern auf jedem Signal 330Ohm-Pullups haben. Die LS- und HCT-Versionen der 
  701. Treiber können diesen Strom von 16mA normalerweise liefern, auch wenn der 
  702. Hersteller dafür nicht garantiert. Wer ganz sicher gehen und solche Geräte 
  703. anschließen will, sollte ACT(garantiert 24mA)- oder FCT(garantiert 
  704. 48mA)-Treiber einsetzen (bringt aber mehr Hochfrquenzmüll auf die 
  705. Leitungen).
  706.  
  707. Dann gibt es noch wenige Drucker, die grundsätzlich nur funktionieren, wenn 
  708. das auf Pin17 der 25poligen Druckerbuchse liegende (oder auch nicht) Signal 
  709. SELECT auf Low-Pegel (also Masse) ist. In diesem Fall sollte man Pin17 mit 
  710. Pin18 verbinden, entweder im Druckerkabel, oder auf dem für Druckeranschluß 
  711. vorgesehenen Port von Mulpri.
  712.  
  713.  
  714.  
  715. Software
  716. ========
  717.  
  718. Zur Software gehört das Treiberprogramm 4P_AUTO.PRG, das Accessory 
  719. 4P_ACC.ACC und das CPX-Modul 4P_CPX.CPX. Das CPX ist am 08.08.1993 noch 
  720. nicht vorhanden. Die Anleitungen dazu befinden sich in den Files 
  721. 4P_AUTO.TXT, 4P_ACC.TXT und 4P_CPX.TXT.
  722.  
  723.  
  724. CPX-Modul 4P_CPX.CPX
  725. --------------------
  726. Das CPX kann alternativ zum Accessory benutzt werden. Es enthält die 
  727. gleichen manuellen Umschaltfunktionen.
  728.  
  729. Am 08.08.1993 existiert es noch nicht.
  730.  
  731.  
  732. Druckerspooler
  733. --------------
  734. Im Hintergrund arbeitende Druckerspooler, besonders die von der 
  735. BUSY-Interrupt getriebenen Sorte, sollte man tunlichst deaktivieren bzw. 
  736. ganz rauswerfen, wenn man beabsichtigt, Mulpri mal umzuschalten.
  737.  
  738. Druckerspoolerprogrammierer! Seht euch das File 4PRN_COO.TXT an und 
  739. ergänzt euren Spooler so, daß er mit Mulpri zusammenarbeitet.
  740.  
  741.  
  742.  
  743. Kompatibilität
  744. ==============
  745.  
  746. Mulpri kann als voll kompatibel bezeichnet werden. Ich möchte aber auf alle 
  747. Kleinigkeiten hinweisen, die mir als Inkompatibilität einfallen. Sie haben 
  748. sich aber noch nicht negativ bemekrbar gemacht:
  749. - größerer Treiberstrom der Ausgänge
  750. - falls LS-Treiber, max. 0.4mA Eingangsstrom im L-Zustand, wenn D7..D0 auf
  751.   Eingang geschaltet sind
  752. - BUSY-Signal und Ausgangssignale sind um etwa 25ns zusätzlich verzögert
  753. - /STROBE kann nicht mehr auf Eingang geschaltet werden (PortA des
  754.   Soundchips hat m.W. noch keiner absichtlich auf Eingang geschaltet)
  755. - BUSY kann nicht mehr als Ausgang geschaltet werden (hat m.W. auch noch
  756.   keiner absichtlich gemacht, wobei der MFP die 16mA für den Pullup auch
  757.   kaum aufbringen kann)
  758.  
  759. Wenn ein Port im Zustand LOCKED1P ist, so darf man wie gewohnt am Soundchip 
  760. fummeln. Ich bitte aber darum, im Interesse der Kompatibilität, die Ports 
  761. nur mit der Funktion Pswitch des 4P_AUTO umzuschalten oder zur Ausgabe auf 
  762. nichtaktive Ports die anderen Funktionen zu benutzen. Wer eine bestimmte 
  763. nichtexistente Funktion braucht, sollte sich bei mir melden.
  764.  
  765. Wenn ein Programm zur Steuerung einer bestimmten Hardware mehr als einen 
  766. Port braucht und darauf schneller als über Pswitch zugreifen möchte, 
  767. sollte sich der Programmierer ebenfalls bei mir melden. Dafür habe ich den 
  768. Zustand LOCKED4P vorgesehen, zu dem es noch spezielle Routinen in 4P_AUTO 
  769. geben wird.
  770.  
  771. Wer in seinem Programm durch direkte Zugriffe auf den Soundchip die 
  772. Mulpri-Hardware umschaltet, ohne sich vorher mit mir entsprechend 
  773. verständigt zu haben, hat mein ALLERGRÖSSTES UNVERSTÄNDNIS.
  774.  
  775.  
  776.  
  777. Versionen
  778. =========
  779.  
  780. Ich vergebe keine Versionsnummern, sondern überlasse die Unterscheidung dem 
  781. in der Installationsmeldung ausgegebenen Datum bzw. dem Erstellungsdatum 
  782. der Datei. Ich notiere das Datum in der deutschen Schreibweise, also 
  783. Tag.Monat.Jahr.
  784.  
  785. Neue Versionen sind zuerst in der Maus Berlin, Telefonnummer 030-727056 
  786. (oft besetzt, Gastdownload 10.00-19.00 und 23.00-03.00), zu finden und 
  787. verbreiten sich schnell über die Mäuse. Man sollte nach dem Filenamen 
  788. "MULPRI*.*" suchen lassen. Reine Softwareupdates werden unter "4PSOFT*.*" 
  789. erscheinen. Das Archiv wird MULPRIxx.LZH heißen, wobei xx 
  790. für die fortlaufende Veröffentlichungsnummer steht.
  791.  
  792. 08.08.1993 erste öffentliche Version
  793.  
  794.  
  795. Harun Scheutzow, 26.06.1993 ...
  796.